package com.xbongbong.admin.service;

import com.xbongbong.admin.pojo.dto.MirrorChartPreviewDTO;
import com.xbongbong.admin.pojo.dto.MirrorInstallAllDTO;
import com.xbongbong.admin.pojo.dto.MirrorInstallDTO;
import com.xbongbong.admin.pojo.dto.MirrorInstructionAllDTO;
import com.xbongbong.admin.pojo.dto.MirrorInstructionDTO;
import com.xbongbong.admin.pojo.dto.MirrorMenuListAllDTO;
import com.xbongbong.admin.pojo.dto.MirrorMenuListDTO;
import com.xbongbong.admin.pojo.dto.MirrorPreviewDTO;
import com.xbongbong.admin.pojo.vo.MirrorChartListAllVO;
import com.xbongbong.admin.pojo.vo.MirrorChartListVO;
import com.xbongbong.admin.pojo.vo.MirrorChartPreviewVO;
import com.xbongbong.admin.pojo.vo.MirrorInstallAllVO;
import com.xbongbong.admin.pojo.vo.MirrorInstallVO;
import com.xbongbong.admin.pojo.vo.MirrorInstructionAllVO;
import com.xbongbong.admin.pojo.vo.MirrorInstructionVO;
import com.xbongbong.admin.pojo.vo.MirrorMenuListVO;
import com.xbongbong.admin.pojo.vo.MirrorPreviewVO;
import com.xbongbong.admin.pojo.vo.MirrorSystemMenuListVO;
import com.xbongbong.admin.pojo.vo.MirrorWorkOrderListVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.script.pojo.dto.MirrorDeleteAttrDTO;
import com.xbongbong.pro.script.pojo.dto.MirrorUpdateAttrDTO;

/**
 * 镜像
 * @author xingxing.xiao
 */
public interface MirrorConfigService {

    /**
     * 镜像安装
     * @param mirrorInstallDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorInstallVO install(MirrorInstallDTO mirrorInstallDTO) throws XbbException;

    /**
     * 组合镜像安装
     * @param mirrorInstallAllDTO
     * @return
     * @throws XbbException   * @author xingxing.xiao
     */
    MirrorInstallAllVO installAll(MirrorInstallAllDTO mirrorInstallAllDTO) throws XbbException;

    /**
     * 镜像菜单列表
     * @param mirrorMenuListDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorMenuListVO getMenuList(MirrorMenuListDTO mirrorMenuListDTO) throws XbbException;

    /**
     * 组合镜像菜单列表
     * @param mirrorMenuListDTO
     * @return
     * @throws XbbException
     * @author youli.chen
     */
    MirrorMenuListVO getMenuListAll(MirrorMenuListAllDTO mirrorMenuListDTO) throws XbbException;
    /**
     * 表单镜像列表
     * @param mirrorMenuListDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorSystemMenuListVO getSystemFormList(MirrorMenuListDTO mirrorMenuListDTO) throws XbbException;

    /**
     * 组合表单镜像列表
     * @param mirrorMenuListAllDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorSystemMenuListVO getSystemFormListAll(MirrorMenuListAllDTO mirrorMenuListAllDTO) throws XbbException;
    /**
     * 工单镜像列表
     * @param mirrorMenuListDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorWorkOrderListVO getWorkOrderList(MirrorMenuListDTO mirrorMenuListDTO) throws XbbException;
    /**
     * 组合工单镜像列表
     * @param mirrorMenuListDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorWorkOrderListVO getWorkOrderListAll(MirrorMenuListAllDTO mirrorMenuListDTO) throws XbbException;
    /**
     * 图表镜像列表
     * @param mirrorMenuListDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorChartListVO getChartList(MirrorMenuListDTO mirrorMenuListDTO) throws XbbException;
    /**
     * 组合图表镜像列表
     * @param mirrorMenuListDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorChartListAllVO getChartListAll(MirrorMenuListAllDTO mirrorMenuListDTO) throws XbbException;
    /**
     * 镜像图表预览
     * @param mirrorChartPreviewDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorChartPreviewVO getChartPreview(MirrorChartPreviewDTO mirrorChartPreviewDTO) throws XbbException;

    /**
     * 镜像预览
     * @param mirrorPreviewDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorPreviewVO preview(MirrorPreviewDTO mirrorPreviewDTO) throws XbbException;

    /**
     * 镜像简介
     * @param mirrorInstructionDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorInstructionVO getMirrorInstruction(MirrorInstructionDTO mirrorInstructionDTO) throws XbbException;

    /**
     * 组合镜像简介
     * @param mirrorInstructionAllDTO
     * @return
     * @throws XbbException
     * @author xingxing.xiao
     */
    MirrorInstructionAllVO getMirrorInstructionAll(MirrorInstructionAllDTO mirrorInstructionAllDTO) throws XbbException;

    /**
     * 处理解释字段的属性值
     * @param mirrorUpdateAttrDTO
     * @author xingxing.xiao
     * @date 2020/05/26 10:39
     */
    Integer updateMirrorAttr(MirrorUpdateAttrDTO mirrorUpdateAttrDTO) throws XbbException;

    /**
     * 删除解释字段里多余属性(仅：可新增，可删除)
     * @param mirrorDeleteAttrDTO
     * @author xingxing.xiao
     * @date 2020/05/26 10:39
     */
    Integer deleteMirrorExtraAttr(MirrorDeleteAttrDTO mirrorDeleteAttrDTO) throws XbbException;

}
